#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

// Motor pins
#define IN1 9
#define IN2 10

void showMessage(const char* line1, const char* line2) {
  display.clearDisplay();
  display.setTextSize(2);
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(0, 10);
  display.println(line1);
  display.println(line2);
  display.display();
}

void setup() {
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);

  // Initialize OLED
  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    while (1); // OLED not found
  }

  showMessage("System Ready", "");
  delay(1000);
}

void loop() {

  // MOTOR CCW 100%
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  showMessage("Motor CCW", "Speed: 100%");
  delay(4000);

  // STOP
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  showMessage("Motor STOP", "");
  delay(2000);

  // MOTOR CW 100%
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  showMessage("Motor CW", "Speed: 100%");
  delay(4000);

  // STOP
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  showMessage("Motor STOP", "");
  delay(2000);

  // MOTOR 50% SPEED (PWM)
  analogWrite(IN1, 128); // 50% duty cycle
  digitalWrite(IN2, LOW);
  showMessage("Motor RUN", "Speed: 50%");
  delay(4000);
}
